/**
 * <p>
 * 版权所有：中企动力
 * </p>
 * <p>
 * 未经本公司许可，不得以任何方式复制或使用本程序任何部分
 * </p>
 */
package com.ce.pms.common.service;

import java.util.List;
import java.util.Map;

import com.ce.pms.common.vo.EmployeeRightVO;
import com.ce.pms.house.vo.BuildingVO;
import com.ce.pms.house.vo.CompanyVO;
import com.ce.pms.house.vo.ManageOrgVO;
import com.ce.pms.house.vo.PrecinctVO;
import com.sitechasia.webx.core.support.Page;

/**
 * 
 *权限操作
 * 
 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
 * @Created 2008-10-17
 */

public interface IDataRightService {

	/**
	 * 数据权限类型
	 * 
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @Created 2008-10-23
	 */
	enum DataRightType {
		/**
		 * 楼栋
		 */
		BUILDING,
		/**
		 * 管理区
		 */
		PRECINCT
	}
	
	/**
	 * 判断用户是都有该房屋的访问权限
	 * @param userId 用户id
	 * @param hoursId 房屋id
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-11-28
	 */
	public boolean getDataRightByUserId(Long userId,Long hoursId);

	/**
	 * 获取数据权限的树形数据
	 * 
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-10-22
	 */
	Map<CompanyVO, Map<ManageOrgVO, Map<PrecinctVO, List<BuildingVO>>>> getManageTree();

	/**
	 * 是否有楼栋权限
	 * 
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-10-22
	 */
	boolean isPrecinctRight(Long userId);

	/**
	 * 保存数据权限
	 * 
	 * @param userId 用户id
	 * @param dataRightType 数据权限类型
	 * @param ids 楼栋或管理区id
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-10-22
	 */
	boolean saveDataRight(Long creator,Long userId, DataRightType dataRightType, Long[] ids);

	/***
	 * 功能描述: 根据查询条件查找用户<br>
	 * 
	 * @param employee
	 * @param pageNO
	 * @param pageSize
	 * @return Create author:yandawei <br>
	 *         Create on:2008-10-23 <br>
	 *         Edit author: <br>
	 *         Edit on: <br>
	 *         Why: <br>
	 */
	Page queryEmployeeDataRight(EmployeeRightVO employee, Integer pageNO,
			Integer pageSize);
	
	/**
	 * 判断是否有用户权限
	 * @param UserId
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-10-27
	 */
	boolean hasUserDataRight(Long userId);
	
	/**
	 * @param userId
	 * @return
	 * @author <a href="mailto:i0o@live.cn">黄腾飞</a>
	 * @created 2008-10-27
	 */
	Long[] getUserDataRight(Long userId);
}
